A color image comprises a number of pixels. Each pixel corresponds to a defined location in the image. The pixels have a number of components that contribute to defining the image, such as color and intensity. For example, a given pixel may be defined in terms of a color space with three values, such as RGB—R for red, G for green, and B for blue—or four values, such as CMYK—C for cyan, M for magenta, Y for Yellow, and K for black. A color space may also be designed to contain a luminance channel and two chrominance channels, such as YCbCr space. In YCbCr space, Y corresponds to the luminance channel, which represents the brightness or intensity of a color, and Cb and Cr are chrominance channels, which represent the blue and red chrominance components, respectively. Each pixel of the image is assigned a number in each color space representing the intensity for that color space at that particular spot. Images that have a large number of color or intensity levels are referred to as continuous tone images or contone images. For example, an 8-bit value comprises 256 values or intensity levels for each color.
It is possible, however, to create the impression of a continuous tone image by using halftoning. The halftone process is generally known, and various methods for halftoning exist. A binary halftone process converts a continuous tone image into a binary image; that is, the image data is converted to an image of black/color and white spots that “appear” to be a continuous tone image. A halftone process may also be multiple-level. Multiple level halftoning converts an input continuous tone image of M levels into an output image of N levels, wherein N is less than M. An example of such a process may include error diffusion. An error diffusion method may include determining a quantization error for a given pixel based on intensity values of the pixel in the original image and based on weighted error values of certain neighbor pixels. The error values are then fed back, possibly filtered by an error filter, and added to the unprocessed pixels of the input continuous tone image. This causes the quantization error to be compensated by the future processing. The error diffusion process may also be binary or multiple level. Examples of a multiple level error diffusion process is disclosed in U.S. Pat. No. 6,760,127, entitled “Multi-Level Semi-Vector Error Diffusion,” filed on Jun. 1, 2000 and issued on Jul. 6, 2004 to the Applicant, which is hereby incorporated by reference in its entirety.
Quite often, image data is lightly compressed or coded. The purpose of compression is to reduce the amount of image data, i.e., reduce the file size, with little sacrifice of the image quality. It is a process of encoding information with fewer bits, and enables devices to transmit or store the same amount of data. Compression of image data may be performed using many known processes, such as JPEG, JBIG, JBIG2, and JPEG200 compression. These compression methods provide an adequate compression ratio and a decent image quality for many applications. However, they are typically complicated. Both encoding and decoding of the image data requires significant computation and intermediate buffering storage. In addition, the compressed image data of these processes has different bit arrangements than the original image data. Many image processing operations, such as image rotation, cropping, and scaling may not be easily performed on the compressed image data without first decompressing the data. Thus, the compression and decompression methods can be further improved.